package com.education.platform.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.education.platform.entity.Conversation;

import java.util.List;

/**
 * 会话服务接口
 *
 * @author education-platform
 * @since 2024-10-07
 */
public interface ConversationService {

    /**
     * 创建私聊会话
     */
    String createPrivateConversation(Long user1Id, Long user2Id);

    /**
     * 创建群聊会话
     */
    String createGroupConversation(String name, String avatar, List<Long> userIds);

    /**
     * 根据ID获取会话
     */
    Conversation getConversationById(String id);
    
    /**
     * 获取会话详情（包含对方用户信息）
     */
    Conversation getConversationDetailWithUserInfo(String id, Long currentUserId);

    /**
     * 分页查询用户会话列表
     */
    IPage<Conversation> getUserConversationPage(Page<Conversation> page, Long userId);

    /**
     * 查询用户会话列表
     */
    List<Conversation> getUserConversations(Long userId);

    /**
     * 查询私聊会话
     */
    Conversation getPrivateConversation(Long user1Id, Long user2Id);

    /**
     * 更新会话信息
     */
    void updateConversation(String conversationId, String name, String avatar);

    /**
     * 添加会话参与者
     */
    void addParticipant(String conversationId, Long userId);

    /**
     * 移除会话参与者
     */
    void removeParticipant(String conversationId, Long userId);

    /**
     * 检查用户是否为会话参与者
     */
    boolean isParticipant(String conversationId, Long userId);

    /**
     * 获取会话参与者列表
     */
    List<Long> getParticipants(String conversationId);

    /**
     * 删除会话
     */
    void deleteConversation(String conversationId, Long userId);
}
